import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class FolderNameExtractor {

    public static void main(String[] args) {
        // 指定文件夹路径
        String directoryPath = "D:\\3code\\3Python\\python_lean\\11_download_img\\up_quality_02"; // 请根据实际情况修改路径
        File directory = new File(directoryPath);

        // 检查指定路径是否为文件夹
        if (!directory.isDirectory()) {
            System.out.println("指定路径不是文件夹");
            return;
        }

        // 获取文件夹下的所有文件和子文件夹
        File[] files = directory.listFiles();
        List<Integer> folderNumbers = new ArrayList<>();

        if (files != null) {
            for (File file : files) {
                // 检查是否为文件夹
                if (file.isDirectory()) {
                    String folderName = file.getName();
                    // 尝试从文件夹名称中提取数字
                    String[] parts = folderName.split("_");
                    for (String part : parts) {
                        try {
                            int number = Integer.parseInt(part);
                            folderNumbers.add(number);
                        } catch (NumberFormatException e) {
                            // 如果部分不是数字，则忽略
                        }
                    }
                }
            }
        }

        // 打印提取的数字列表
        // System.out.println("提取的文件夹数字列表: " + folderNumbers);

        // 对提取的数字列表进行去重和升序排列
        Set<Integer> uniqueNumbers = new HashSet<>(folderNumbers);
        folderNumbers = new ArrayList<>(uniqueNumbers);
        Collections.sort(folderNumbers);

        String outputFilePath = directoryPath + "\\folder_numbers_04.txt";
        File outputFile = new File(outputFilePath);

        try (FileWriter writer = new FileWriter(outputFile)) {
            // for (List<Integer> list : continuousLists) {
            //     // 将每个连续列表转换为字符串并写入文件
            //     writer.write(list.toString() + "\n");
            // }
            writer.write(folderNumbers.toString() + "\n");

            System.out.println("结果已保存到 " + outputFilePath);
        } catch (IOException e) {
            System.out.println("写入文件时发生错误: " + e.getMessage());
        }

        // // 拆分成多个以1为累阶的连续数字列表
        // List<List<Integer>> continuousLists = new ArrayList<>();
        // List<Integer> currentList = new ArrayList<>();

        // for (int i = 0; i < folderNumbers.size(); i++) {
        //     if (currentList.isEmpty() || folderNumbers.get(i) == currentList.get(currentList.size() - 1) + 1) {
        //         // 如果当前列表为空或当前数字是连续的，则添加到当前列表
        //         currentList.add(folderNumbers.get(i));
        //     } else {
        //         // 否则，将当前列表添加到连续列表集合中，并开始新的列表
        //         continuousLists.add(currentList);
        //         currentList = new ArrayList<>();
        //         currentList.add(folderNumbers.get(i));
        //     }
        // }

        // // 如果最后一个连续列表不为空，则添加到连续列表集合中
        // if (!currentList.isEmpty()) {
        //     continuousLists.add(currentList);
        // }

        // // 打印多组连续数字列表
        // for (List<Integer> list : continuousLists) {
        //     System.out.println(list);
        // }

    }
}
